// 放置一些全局性的杂项数据（如果某一类数据比较多，建议新开切片）
import { IMenuItem } from '@/router/static-router';
import type { PayloadAction } from '@reduxjs/toolkit';
import { createSlice } from '@reduxjs/toolkit';

interface IInitState {
  /** 用户名称 */
  userName: string;
  /** 用户有权限访问的菜单 */
  userMenu: IMenuItem[];
  /** 用户有权限访问的界面组件的id（一般用于控制按钮显隐之类的） */
  userPermission: string[];
}

// 初始值
const initialState: IInitState = {
  userName: '',
  userMenu: [],
  userPermission: [],
};

// 创建切片
const currentSlice = createSlice({
  name: 'user',
  initialState,
  reducers: {
    setUserInfo: (state, action: PayloadAction<any>) => {
      state.userName = action.payload?.userName || '';
      state.userMenu = action.payload?.userMenu || [];
      state.userPermission = action.payload?.userPermission || [];
    },
  },
});

// 用于redux注册的
export default currentSlice.reducer;

// @reduxjs/toolkit会自动生成action，外部调用这个就行
export const { setUserInfo } = currentSlice.actions;
